# 选择工具类
# 从list 中返回需要的信息
import random

# 功能型函数  从已经挑选的集合中选择最小 重复则随机挑选
# 输入：list
# 输出：最小值下标   
def  Get_Min_Index(Select):
    if len(Select) <= 1:    # 小于一个个体直接返回
        return 0

    Min = min(Select)   # 找到最小
    Special_Selected = []   # 挑选集
    for i in range(len(Select)):
        if Select[i] == Min:
            Special_Selected.append(i)
    Index = random.choice(Special_Selected)
    return Index


# 功能型函数  从已经挑选的集合中选择最大 重复则随机挑选
# 输入：list
# 输出：最大值下标   
def  Get_Max_Index(Select):
    if len(Select) <= 1:    # 小于一个个体直接返回
        return 0    

    Max = max(Select)   # 找到最大
    Special_Selected = []   # 挑选集
    for i in range(len(Select)):
        if Select[i] == Max:
            Special_Selected.append(i)
    Index = random.choice(Special_Selected)

    return Index



# 功能型函数  从已经挑选的集合中选择最小 重复则随机挑选
# 输入：list
# 输出：list最小值  最小值下标   
def Get_Min_Info_Without(Select):
    Index = Get_Min_Index(Select)
    return Select[Index],Index


# 功能型函数  从已经挑选的集合中选择最大 重复则随机挑选
# 输入：list
# 输出：list最大值  最大值下标   
def Get_Max_Info_Without(Select):
    Index = Get_Max_Index(Select)
    return Select[Index],Index



# 功能型函数  从已经挑选的集合中选择中位值 重复则随机挑选
# 输入：list
# 输出：list中位值  中位值下标   
def Get_Mid_Info_Without(Select):
    pass


# 功能型函数  从已经挑选的集合中选择最小 重复则随机挑选
# 参数说明： 两个参数下标一一对应 内容也一一对应
#           Select               计算挑选出来的内容    
#           Select_To_Return     前面内容所对应的需要返回的有效信息
# 输入：index  index_content
# 输出：相应最小值
def Get_Min_Info_With(Select,Select_To_Return):
    Min,Index = Get_Min_Info_Without(Select)
    return Min,Index,Select_To_Return[Index]



# 功能型函数  从已经挑选的集合中选择最大 重复则随机挑选
# 参数说明： 两个参数下标一一对应 内容也一一对应
#           Select               计算挑选出来的内容    
#           Select_To_Return     前面内容所对应的需要返回的有效信息
# 输入：index  index_content
# 输出：相应最大值
def Get_Max_Info_With(Select,Select_To_Return):
    Max,Index = Get_Max_Info_Without(Select)
    return Max,Index,Select_To_Return[Index]




# 功能型函数  从已经挑选的集合中选择中位值 重复则随机挑选
# 参数说明： 两个参数下标一一对应 内容也一一对应
#           Select               计算挑选出来的内容    
#           Select_To_Return     前面内容所对应的需要返回的有效信息
# 输入：index  index_content
# 输出：相应中位值
def Get_Mid_Info_With(Select,Select_To_Return):
    pass